1. Field of the Invention
This invention relates generally to distributed software execution, and more particularly to thread priority control and resource contention resolution in a distributed computer environment.
2. Description of the Related Art
A server farm is a group of networked servers that are housed in one location, which streamlines internal processes by distributing the workload between the individual servers and other components of the farm. The server farm can also expedite computing processes by efficiently harnessing the power of the multiple computers (e.g., multiple servers). FIG. 1 is a block diagram of a typical prior art server farm 100. The server farm 100 includes a plurality of servers 102A–102n, which are networked together via a network 104. The server farm 100 can also include input/output systems 108 for interfacing and networking the server farm 100 to other computers or computer networks (e.g., Internet, LAN, WAN, etc.). In addition, other devices 110 that may be necessary for the particular demands of the server farm 100 can be included in the server farm 100.
The server farm 100 is controlled by a control system 106, which typically is a separate controlling computer that includes controlling software 106a. The controlling software 106a generally is specifically designed for the precise needs and design of the server farm 100. The controlling software 106A accomplishes such tasks as load balancing, tracking demand for processing power from the different servers 102a–102n, prioritizing the tasks input to the server farm 100 and scheduling and rescheduling the tasks depending on priority and demand that users place on the server farm 100. The control system 106 also can automatically replace a failed server (e.g., server 102A) with another server (e.g., server 102B).
Combining servers and processing power into a single server farm 100 has been relatively common for many years in research and academic institutions. However server farms are becoming more common as companies utilize server farms to handle the enormous amount of computerization of tasks and services that the particular company may require.
The typical prior art server farm control system software 106A includes multiple low-level applications that are specifically designed for the specific hardware and software configuration of each of the individual servers 102A–n and the server farm 100. As server farms become more and more common, the specialization and customization of the control system software 106A becomes more problematic. Each implementation of the typical low level, very specifically designed control system software 106A is very complicated. The complications arise due to the individual, specific hardware and software configuration of the server farm 100. The implementation of the specifically designed control system software 106A is repetitive because many server farms have common requirements. Therefore, customized, low-level control system software 106A is inefficient and unnecessarily difficult.
To increase efficiency of task execution, each server 102a–102n can include multiple CPUs. The multiple CPUs allow the server to process an increased number of tasks in parallel. That is, the Java virtual machine (JVM) can maintain a separate processing thread for each task executed on the CPUs. Although, task priority typically can be adjusted using specific Java software, prior art systems generally cannot adjust task priority remotely, as in a distributed computing environment.
Further, tasks often can be executed on a particular server in parallel without causing resource conflicts. However, if two tasks require the same system resource during parallel execution, resource contention problems can occur. For example, two audio testing tasks executing in parallel may attempt to utilize the same audio resource simultaneously. The resulting contention can cause problems and/or errors with the audio tasks.
In view of the foregoing, there is a need for systems and methods that allow thread priority control on distributed computing environments. That is, a need exists for systems and methods that allow control of computing resource allocation remotely. Further, the systems and methods should provide a mechanism to reduce resource contention problems that may occur when parallel tasks attempt to access the same resource.